package com.nd.android.musicboxlibrary.util;

import android.content.Context;
import android.content.Intent;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import com.nd.android.musicboxlibrary.R;
import com.nd.android.musicboxlibrary.business.bean.MusicInfo;
import com.nd.android.musicboxlibrary.business.comm.MagicNumber;
import com.nd.android.musicboxlibrary.service.player.MusicService;
import com.nd.android.starapp.multiproduct.ProductConstant;
import com.nd.rj.common.incrementalupdates.utils.LogUtil;
import com.product.android.utils.LogUtils;

import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * TODO(这里用一句话描述这个类的作用)
 *
 * @author 慕容秋 (muroqiu@qq.com)
 */
public final class MusicBoxUtils implements MagicNumber {

    /**
     *
     * <br>Created 2014年11月28日 上午12:05:46
     * @author       wat.ztag
     */
    @Override
    public void initMagicNumber() {
    }

    /**
     * Creates a new instance of Utils. <br>
     * Created 2014年9月11日 下午11:12:46
     */
    private MusicBoxUtils() {
    }

    /**
     * <br>
     * Created 2014年9月11日 下午11:13:28
     *
     * @param seconds long
     * @return String
     * @author wat.ztag
     */
    public static String formatDateToYear(long seconds) {
        String style = "yyyy";
        FastDateFormat df = FastDateFormat.getInstance(style, null, null);
        return df.format(new Date(seconds * n1000));
    }

    /**
     * <br>
     * Created 2014年9月11日 下午11:13:34
     *
     * @param size long
     * @return String
     * @author wat.ztag
     */
    public static String formatSize2String(long size) {
        DecimalFormat df = new DecimalFormat("0.0");
        String mysize = "";
        if (size > n1024 * n1024) {
            mysize = df.format(size / n1024f / n1024f) + "M";
        } else if (size > n1024) {
            mysize = df.format(size / n1024f) + "K";
        } else {
            mysize = size + "B";
        }
        return mysize;
    }

    /**
     * 含有搜索字符高亮的字符串
     *
     * @param str String
     * @param strSearch String
     * @param context Context
     * @return SpannableStringBuilder
     */
    public static SpannableStringBuilder getLightenStr(String str, String strSearch, Context context) {
        SpannableStringBuilder lightenStr = new SpannableStringBuilder(str);
        if (str.length() > 0) {
            if (str.matches("(?i).*" + strSearch + ".*")) {
                String replaceStr = str.replaceAll("(?i)" + strSearch, strSearch);
                int start = replaceStr.indexOf(strSearch);
                int end = start + strSearch.length();
                lightenStr.setSpan(
                        new ForegroundColorSpan(context.getResources().getColor(
                                R.color.mbx_font_blue)), start, end,
                        Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
            }
        }
        return lightenStr;
    }

    /**
     * <br>
     * Created 2014年9月11日 下午11:48:44
     *
     * @param str String
     * @return String
     * @throws PatternSyntaxException
     * @author wat.ztag
     */
    public static String stringFilter(String str) {

        // String regEx = "[/\\:*?<>|\"\n\t]";

//        String regEx = "[^a-zA-Z0-9\u4E00-\u9FA5]";
        String regEx = "[^\\s+a-zA-Z0-9\u4E00-\u9FA5]"; // edit by liaofuyong 加入 不过滤空格

        Pattern p = Pattern.compile(regEx);

        Matcher m = p.matcher(str);

        return m.replaceAll("");

    }

    /**
     * 生成下载页面底栏描述字符串
     *
     * @param context Context
     * @param datas List<MusicInfo>
     * @return SpannableStringBuilder
     */
    public static SpannableStringBuilder getDownloadFooterText(Context context,
                                                               List<MusicInfo> datas) {
        if (datas == null || datas.isEmpty()) {
            return null;
        }
        int count = datas.size();
        long fileSize = 0;
        for (MusicInfo obj : datas) {
            if (obj.isDownLoaded()) {
                if(obj.isHQ() && obj.getHQId() > 0){// by jiangwb
                    fileSize += obj.getHQSize();
                }else{
                    fileSize += obj.getSize();
                }
            }
        }

        String strSize = formatSize2String(fileSize);

        String strFooter = String.format(
                context.getResources().getString(R.string.mbx_download_footer), count, strSize);

        return getLightenStr(strFooter, strSize, context);
    }

    /**
     *停止服务
     * @param context
     */
    public static  void stopMusicService(Context context)
    {
        try {
            Intent intent =getMusicService(context);
            context.stopService(intent);
        }catch (Exception e)
        {
            LogUtils.e("stopMusicService error"+e.getMessage());
        }
    }

    /**
     * 获取播放器service的Intent(和musicService交互使用).
     * @param context 不能为空
     */
    public static Intent getMusicService(Context context)
    {
            Intent intent =new Intent(context,MusicService.class);
            intent.setAction(getMusicServiceAction());
            return intent;
    }

    /**
     * 获取MusicService的action的Intent
     * @return
     */
    public static Intent getMusicServiceActionIntent()
    {
        return new Intent(getMusicServiceAction());
    }
    /**
     * 获取音乐盒的action
     * @return
     */
    public static String getMusicServiceAction()
    {
        LogUtil.i("scj", "-----getMusicServiceAction------" + MusicService.class.getName() + ProductConstant.getProductTag());
        return MusicService.class.getName()+ ProductConstant.getProductTag();
    }

}
